[script] como rodar sudo dentro do script? [RESOLVIDO]

1. [script] como rodar sudo dentro do script? [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/10/2010 - 15:27h

Bom dia meus caros! Venho tirar uma dúvida terrível, que está tirando meu sono... Já cacei em tudo que foi canto e nada de achar a solução.

Seguinte: escrevi um script que altera algumas configurações e queria chamar o sudo de dentro dele para alterar a cada "N" eventos um arquivo de configuração (pedindo a senha de usuário no terminal), algo como:

for i in a b c; do
sudo cat <<EOF > /etc/meu.conf
NONONONONO=NONO
NONON=NONONO
NONNO=NNONO

EOF

comando 1
comando 2
etc
done

beleza. aí quando executo, o arquivo meu.conf continua igual e sai uma mensagem de erro no script (erro de autorização, como se o sudo tivesse sido ignorado e o comando executado como vfs) apontando a linha desse comando. onde estou errando?

não quero ter que continuar fazendo: sudo meuscript toda vez, porque o restante do script não precisa de autorização root para funcionar... nem quero mexer no /etc/sudoers. Entendo que ficar executando esse script como root pode ser uma falha de segurança... ou não???

alguém se habilita?

abraço!


  


2. Re: [script] como rodar sudo dentro do script? [RESOLVIDO]

José Mário
miura 787

(usa Ubuntu)

Enviado em 18/10/2010 - 15:58h

Dentro do seu script faça o seguinte:

sudo <comando>
echo <senha> > /dev/null

Com isso seu script fará o comando com permissão de root:

Retire os privilégios de leitura e escrita para usuários comuns, deixando somente o privilégio de execução.

sudo chown root:root <seuScript> // Torna seu script uma propriedade de root

sudo chmod 000 <seuScript> //Retira todas as permissões do script

sudo chmod u+wrx,o+x <seuScript> // Permite acesso completo para root e somente execução para outros usuários

Desta forma nenhum outro usuario poderá ver a senha

Ats
Miura 787


3. Re: [script] como rodar sudo dentro do script? [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/10/2010 - 16:32h

@Miura787:

obrigado pela resposta. Mas não entendi como isso pode ser implantado... veja... preciso somente que o comando:

cat <<EOF > arquivo.conf
:
EOF

seja executado como root. Não entendi essa parte de colocar o sudo e depois echo senha > /dev/null.

tentei anteriormente algo como :

echo senha | sudo -S cat <<EOF > arquivo.conf

sem sucesso.

e também não dá certo o sudo puro. Ele pede a senha, eu insiro manualmente (isso que eu quero, que ele peça senha, eu conceda e repita isso até acabar o loop, não preciso colocar a senha exatamente no script).

A unica solução no momento é dar um:

sudo ./script

e executar ele todo como root, o que eu não quero...

[]s


4. Re: [script] como rodar sudo dentro do script? [RESOLVIDO]

José Mário
miura 787

(usa Ubuntu)

Enviado em 19/10/2010 - 02:16h

Na verdade qdo vc coloca o echo <senha> > /dev/null acontece o seguinte:

Qdo se usa o sudo, posteriormente ele pede a senha e o usuario digita no terminal.

Qdo vc usa o echo <senha> > /dev/null o próprio script se encarrega de informar a senha para o comando sudo sem que apareça nada na tela do terminal.


No caso que vc relatou, pelo que entendi vc quer digitar manualmente a senha para cada ciclo do loop, mas acredito que após vc digitar a 1a vez a senha nos próximos ciclos não será mais pedido.

No caso do seu comando ficaria:

sudo cat <<EOF > arquivo.conf
echo <senha> > /dev/null

Assim não seria solicitada a senha para o usuario!

Ats
Miura 787


5. Re: [script] como rodar sudo dentro do script? [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/10/2010 - 09:16h

..."o restante do script não precisa de autorização root para funcionar..."

#!/bin/bash

function _getConf()
{
cat /etc/meu.conf
}

sudo _getConf;

exit

não resolveria???


6. Re: [script] como rodar sudo dentro do script? [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/10/2010 - 09:43h

ola amigos... não deu certo de jeito nenhum... ainda estou rodando o script todo como sudo...

@ronin: acredito que a coisa esteja executando num subshell, de modo que a função sequer é reconhecida como comando... vou tentar export, algo assim...


7. Re: [script] como rodar sudo dentro do script? [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/10/2010 - 10:12h

Deculpe... É que não estou na frente de meu Debian, infelizmente meu PC foi pro saco e então não posso testar minha teoria de forma satisfatória... Mas, só por consideração... tenta ae :)

#!/bin/sh


_getConf()
{
sudo cat conf.conf &&
return true ||
return false
}

_getConf && restante do script


8. Re: [script] como rodar sudo dentro do script? [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/10/2010 - 10:23h

@todos: sem chance pessoal...

fiz diferente...

criei um scriptzim que recebe as 2 variaveis que preciso alterar como $1 e $2 e chamo esse script externo com sudo, assim:

for i in a b c; do
sudo $PWD/meu_script
# resto dos comandos
:
done

onde meu_script tem o conteudo:

cat <<EOF > /etc/conf.conf
trem=$1
otutrem=$2
etc
etal
EOF

ai ele pede a senha, altera o que precisa e o restante vai em frente.

obrigado a todos pela atenção, mas desse jeito ficou bom... atende o que preciso.

Um abraço!!!






  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts